<<續>>
MySQL的函數大列9大類:
FROM_DAYS(): 將參數轉換為日期, 例如
mysql> SELECT FROM_DAYS(730669);
-> '2007-07-03'
FROM_UNIXTIME(), UNIX_TIMESTAMP(): UNIX日期時間格式的處理, 這個不介紹了, 有興趣自行找MySQL文件研究...
GET_FORMAT()(v4.1.1): 傳回日期格式字串, 看下列
GET_FORMAT(DATE,'USA') --> '%m.%d.%Y'
GET_FORMAT(DATE,'JIS') --> '%Y-%m-%d'
GET_FORMAT(DATE,'ISO') --> '%Y-%m-%d'
GET_FORMAT(DATE,'EUR') --> '%d.%m.%Y'
GET_FORMAT(DATE,'INTERNAL') --> '%Y%m%d'
GET_FORMAT(DATETIME,'USA') --> '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'JIS') --> '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'ISO') --> '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'EUR') --> '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'INTERNAL') --> '%Y%m%d%H%i%s'
GET_FORMAT(TIME,'USA') --> '%h:%i:%s %p'
GET_FORMAT(TIME,'JIS') --> '%H:%i:%s'
GET_FORMAT(TIME,'ISO') --> '%H:%i:%s'
GET_FORMAT(TIME,'EUR') --> '%H.%i.%s'
GET_FORMAT(TIME,'INTERNAL') --> '%H%i%s'
可以配合DATE_FORMAT()函數運用, 例如
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
-> '03.10.2003'
mysql> SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));
-> '2003-10-31'
HOUR(): 擷取日期參數的小時數值
LAST_DAY(v4.1.1): 傳回日期參數所在月份的最後一天, 例如LAST_DAY('2009-11-12');傳回'2009-11-30'
MAKEDATE()(v4.1.1): "做日期?" 看例子吧
mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
-> '2011-01-31', '2011-02-01' --> 第一個參數是年份, 第二個參數是指該年份中的第幾天...傳回第二個參數所指的日期
mysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);
-> '2011-12-31', '2014-12-31'
mysql> SELECT MAKEDATE(2011,0);
-> NULL
MAKETIME(v4.1.1): 把時間"做出來"...看例子
mysql> SELECT MAKETIME(12,15,30);
-> '12:15:30' --> 我只有一個感想, 發展MySQL的人真的是閒著沒事做
MICROSECOND()(v4.1.1): 傳回日期參數的微秒數值
MINUTE(): 傳回日期參數的分鐘數值
MONTH(): 傳回日期參數的月份數值
MONTHNAME()(v4.1.21): 傳回日期參數的月份名稱
NOW(), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP(): 回傳現在的日期及時間, 日期、時間全都有了...而且, 搞了那麼多不同函數來做相同的事...
PERIOD_ADD(): 對只有年月的參數加上一月份期間, 例
mysql> SELECT PERIOD_ADD(200801,2);
-> 200803
PERIOD_DIFF(): 回傳兩個只有年月的參數的月份差, 例
mysql> SELECT PERIOD_DIFF(200802,200703);
-> 11
QUARTER(): 傳回日期參數是一年中的那一季
SEC_TO_TIME(): 把秒數參數轉換為'HH:MM:SS'格式
SECOND(): 傳回時間參數的秒數
STR_TO_DATE()(v4.1.1): 轉換字串參數為日期, 可將內容為日期的字串變數轉存到日期變數中, 例如
mysql> SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
-> '2013-05-01'
mysql> SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y');
-> '2013-05-01'
mysql> SELECT STR_TO_DATE('a09:30:17','a%h:%i:%s');
-> '09:30:17'
mysql> SELECT STR_TO_DATE('a09:30:17','%h:%i:%s');
-> NULL
mysql> SELECT STR_TO_DATE('09:30:17a','%h:%i:%s');
-> '09:30:17'
SUBTIME()(v4.1.1): 計算時間差, 例
mysql> SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002');
-> '2007-12-30 22:58:58.999997'
mysql> SELECT SUBTIME('01:00:00.999999', '02:00:00.999998');
-> '-00:59:59.999999'
SYSDATE(): 傳回SYSDATE()函數執行當時的系統日期時間, NOW()和SYSDATE()不的是, NOW()只會回傳NOW()函數所在的位置的執行當時時刻..看下例吧
mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW() | SLEEP(2) | NOW() |
+---------------------+----------+---------------------+
| 2009-11-12 10:17:12 | 0 | 2009-11-12 10:17:12 |
+---------------------+----------+---------------------+
1 row in set (2.01 sec)
mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE() | SLEEP(2) | SYSDATE() |
+---------------------+----------+---------------------+
| 2009-11-12 10:17:36 | 0 | 2009-11-12 10:17:38 |
+---------------------+----------+---------------------+
1 row in set (2.00 sec)
TIME_FORMAT(): 格式化的時間...例如
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
-> '100 100 04 04 4'
至於時間格式字元, 參見DATE_FORMAT()的說明
TIME_TO_SEC(): 傳回時間參數的秒數
TIME()(v4.1.1): 回傳參數中的時間部份
TIMEDIFF()(v4.1.1): 計算兩個時間參數的差...傳回值仍以時間格式表現, 例
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
-> '2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
-> '2008-12-30 01:01:01.000002');
-> '46:58:57.999999'
TIMESTAMP()(v4.1.1): 看例子吧
mysql> SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00' --> 回傳參數的完整日期時間格式
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00' --> 回傳第一個參數加上第二個參數的日期時間值
<<待續>>